Network forwarding elements, such as switches and routers, commonly have control and data plane components. The data plane component handles the forwarding of the data packets that the forwarding element receives. The control plane component provides an interface for configuring the data plane component.
The control plane is implemented by a software layer that is executed by one or more general purpose processors (e.g., CPUs) of the forwarding element. The data plane of the forwarding elements, on the other hand, is often implemented as a pipeline of flow tables that are used to process the incoming data messages (e.g., network packets).
Debugging of the control plane operations can be done by traditional methods of placing break points in the software executed by the processors. The execution stops when a specific line of code is executed and the status and contents of different memory locations are examined. Debugging of the data plane, on the other hand, requires examining packets that flow through the forwarding element.
In a hardware forwarding element, the data message processing of the data plane is done by a series of table lookups implemented in hardware and/or firmware without the use of the forwarding element's processor. Debugging of the data plane operations, therefore, cannot be performed by the traditional methods of debugging software programs.